🎖️GitЯра🎖️
Node / meshtastic / Meshtastic-Android / files / core / model / src / commonMain / kotlin / org / meshtastic / core / model / Message.kt
Displaying Raw • Download
core/model/src/commonMain/kotlin/org/meshtastic/core/model/Message.kt 2d20cd8a4708e2ef66e98d5259f3a97ec93f240a (2d20cd8a) Text, 9.95 KB
T8b949e/*
* Copyright (c) 2026 Meshtastic LLC
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
Tff7b72package T7ee787org.meshtastic.core.model
Tff7b72import T7ee787org.jetbrains.compose.resources.StringResource
Tff7b72import T7ee787org.meshtastic.core.resources.Res
Tff7b72import T7ee787org.meshtastic.core.resources.error
Tff7b72import T7ee787org.meshtastic.core.resources.message_delivery_status
Tff7b72import T7ee787org.meshtastic.core.resources.message_routing_error_max_retransmit
Tff7b72import T7ee787org.meshtastic.core.resources.message_routing_error_no_channel
Tff7b72import T7ee787org.meshtastic.core.resources.message_routing_error_pki_failed
Tff7b72import T7ee787org.meshtastic.core.resources.message_routing_error_pki_send_fail_public_key
Tff7b72import T7ee787org.meshtastic.core.resources.message_routing_error_pki_unknown_pubkey
Tff7b72import T7ee787org.meshtastic.core.resources.message_routing_error_too_large
Tff7b72import T7ee787org.meshtastic.core.resources.message_status_delivered
Tff7b72import T7ee787org.meshtastic.core.resources.message_status_enroute
Tff7b72import T7ee787org.meshtastic.core.resources.message_status_recipient_delivered
Tff7b72import T7ee787org.meshtastic.core.resources.message_status_relayed_not_confirmed
Tff7b72import T7ee787org.meshtastic.core.resources.message_status_sfpp_confirmed
Tff7b72import T7ee787org.meshtastic.core.resources.message_status_sfpp_routing
Tff7b72import T7ee787org.meshtastic.core.resources.message_status_unknown
Tff7b72import T7ee787org.meshtastic.core.resources.routing_error_admin_bad_session_key
Tff7b72import T7ee787org.meshtastic.core.resources.routing_error_admin_public_key_unauthorized
Tff7b72import T7ee787org.meshtastic.core.resources.routing_error_bad_request
Tff7b72import T7ee787org.meshtastic.core.resources.routing_error_duty_cycle_limit
Tff7b72import T7ee787org.meshtastic.core.resources.routing_error_got_nak
Tff7b72import T7ee787org.meshtastic.core.resources.routing_error_max_retransmit
Tff7b72import T7ee787org.meshtastic.core.resources.routing_error_no_channel
Tff7b72import T7ee787org.meshtastic.core.resources.routing_error_no_interface
Tff7b72import T7ee787org.meshtastic.core.resources.routing_error_no_response
Tff7b72import T7ee787org.meshtastic.core.resources.routing_error_no_route
Tff7b72import T7ee787org.meshtastic.core.resources.routing_error_none
Tff7b72import T7ee787org.meshtastic.core.resources.routing_error_not_authorized
Tff7b72import T7ee787org.meshtastic.core.resources.routing_error_pki_failed
Tff7b72import T7ee787org.meshtastic.core.resources.routing_error_pki_send_fail_public_key
Tff7b72import T7ee787org.meshtastic.core.resources.routing_error_pki_unknown_pubkey
Tff7b72import T7ee787org.meshtastic.core.resources.routing_error_rate_limit_exceeded
Tff7b72import T7ee787org.meshtastic.core.resources.routing_error_timeout
Tff7b72import T7ee787org.meshtastic.core.resources.routing_error_too_large
Tff7b72import T7ee787org.meshtastic.core.resources.unrecognized
Tff7b72import T7ee787org.meshtastic.proto.MeshPacket
Tff7b72import T7ee787org.meshtastic.proto.Routing
Tf0883e@SuppressTb4b4b4(Ta5d6ff"Ta5d6ffCyclomaticComplexMethodTa5d6ff"Tb4b4b4)
Tff7b72fun Td2a8ffgetStringResFromTb4b4b4(Te6edf3routingErrorTb4b4b4: Tffa657IntTb4b4b4)Tb4b4b4: Te6edf3StringResource Tff7b72= Tff7b72when Tb4b4b4(Te6edf3routingErrorTb4b4b4) Tb4b4b4{
Te6edf3RoutingTb4b4b4.Te6edf3ErrorTb4b4b4.Te6edf3NONETb4b4b4.Te6edf3value Tff7b72-Tff7b72> Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3routing_error_none
Te6edf3RoutingTb4b4b4.Te6edf3ErrorTb4b4b4.Te6edf3NO_ROUTETb4b4b4.Te6edf3value Tff7b72-Tff7b72> Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3routing_error_no_route
Te6edf3RoutingTb4b4b4.Te6edf3ErrorTb4b4b4.Te6edf3GOT_NAKTb4b4b4.Te6edf3value Tff7b72-Tff7b72> Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3routing_error_got_nak
Te6edf3RoutingTb4b4b4.Te6edf3ErrorTb4b4b4.Te6edf3TIMEOUTTb4b4b4.Te6edf3value Tff7b72-Tff7b72> Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3routing_error_timeout
Te6edf3RoutingTb4b4b4.Te6edf3ErrorTb4b4b4.Te6edf3NO_INTERFACETb4b4b4.Te6edf3value Tff7b72-Tff7b72> Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3routing_error_no_interface
Te6edf3RoutingTb4b4b4.Te6edf3ErrorTb4b4b4.Te6edf3MAX_RETRANSMITTb4b4b4.Te6edf3value Tff7b72-Tff7b72> Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3routing_error_max_retransmit
Te6edf3RoutingTb4b4b4.Te6edf3ErrorTb4b4b4.Te6edf3NO_CHANNELTb4b4b4.Te6edf3value Tff7b72-Tff7b72> Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3routing_error_no_channel
Te6edf3RoutingTb4b4b4.Te6edf3ErrorTb4b4b4.Te6edf3TOO_LARGETb4b4b4.Te6edf3value Tff7b72-Tff7b72> Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3routing_error_too_large
Te6edf3RoutingTb4b4b4.Te6edf3ErrorTb4b4b4.Te6edf3NO_RESPONSETb4b4b4.Te6edf3value Tff7b72-Tff7b72> Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3routing_error_no_response
Te6edf3RoutingTb4b4b4.Te6edf3ErrorTb4b4b4.Te6edf3DUTY_CYCLE_LIMITTb4b4b4.Te6edf3value Tff7b72-Tff7b72> Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3routing_error_duty_cycle_limit
Te6edf3RoutingTb4b4b4.Te6edf3ErrorTb4b4b4.Te6edf3BAD_REQUESTTb4b4b4.Te6edf3value Tff7b72-Tff7b72> Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3routing_error_bad_request
Te6edf3RoutingTb4b4b4.Te6edf3ErrorTb4b4b4.Te6edf3NOT_AUTHORIZEDTb4b4b4.Te6edf3value Tff7b72-Tff7b72> Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3routing_error_not_authorized
Te6edf3RoutingTb4b4b4.Te6edf3ErrorTb4b4b4.Te6edf3PKI_FAILEDTb4b4b4.Te6edf3value Tff7b72-Tff7b72> Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3routing_error_pki_failed
Te6edf3RoutingTb4b4b4.Te6edf3ErrorTb4b4b4.Te6edf3PKI_UNKNOWN_PUBKEYTb4b4b4.Te6edf3value Tff7b72-Tff7b72> Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3routing_error_pki_unknown_pubkey
Te6edf3RoutingTb4b4b4.Te6edf3ErrorTb4b4b4.Te6edf3ADMIN_BAD_SESSION_KEYTb4b4b4.Te6edf3value Tff7b72-Tff7b72> Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3routing_error_admin_bad_session_key
Te6edf3RoutingTb4b4b4.Te6edf3ErrorTb4b4b4.Te6edf3ADMIN_PUBLIC_KEY_UNAUTHORIZEDTb4b4b4.Te6edf3value Tff7b72-Tff7b72> Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3routing_error_admin_public_key_unauthorized
Te6edf3RoutingTb4b4b4.Te6edf3ErrorTb4b4b4.Te6edf3RATE_LIMIT_EXCEEDEDTb4b4b4.Te6edf3value Tff7b72-Tff7b72> Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3routing_error_rate_limit_exceeded
Te6edf3RoutingTb4b4b4.Te6edf3ErrorTb4b4b4.Te6edf3PKI_SEND_FAIL_PUBLIC_KEYTb4b4b4.Te6edf3value Tff7b72-Tff7b72> Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3routing_error_pki_send_fail_public_key
Tff7b72else Tff7b72-Tff7b72> Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3unrecognized
Tb4b4b4}
Tff7b72fun Td2a8ffgetMessageRoutingErrorStringResFromTb4b4b4(Te6edf3routingErrorTb4b4b4: Tffa657IntTb4b4b4)Tb4b4b4: Te6edf3StringResource Tff7b72= Tff7b72when Tb4b4b4(Te6edf3routingErrorTb4b4b4) Tb4b4b4{
Te6edf3RoutingTb4b4b4.Te6edf3ErrorTb4b4b4.Te6edf3GOT_NAKTb4b4b4.Te6edf3valueTb4b4b4,
Te6edf3RoutingTb4b4b4.Te6edf3ErrorTb4b4b4.Te6edf3TIMEOUTTb4b4b4.Te6edf3valueTb4b4b4,
Te6edf3RoutingTb4b4b4.Te6edf3ErrorTb4b4b4.Te6edf3MAX_RETRANSMITTb4b4b4.Te6edf3valueTb4b4b4,
Te6edf3RoutingTb4b4b4.Te6edf3ErrorTb4b4b4.Te6edf3NO_RESPONSETb4b4b4.Te6edf3valueTb4b4b4,
Tff7b72-Tff7b72> Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3message_routing_error_max_retransmit
Te6edf3RoutingTb4b4b4.Te6edf3ErrorTb4b4b4.Te6edf3NO_CHANNELTb4b4b4.Te6edf3value Tff7b72-Tff7b72> Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3message_routing_error_no_channel
Te6edf3RoutingTb4b4b4.Te6edf3ErrorTb4b4b4.Te6edf3TOO_LARGETb4b4b4.Te6edf3value Tff7b72-Tff7b72> Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3message_routing_error_too_large
Te6edf3RoutingTb4b4b4.Te6edf3ErrorTb4b4b4.Te6edf3PKI_FAILEDTb4b4b4.Te6edf3value Tff7b72-Tff7b72> Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3message_routing_error_pki_failed
Te6edf3RoutingTb4b4b4.Te6edf3ErrorTb4b4b4.Te6edf3PKI_UNKNOWN_PUBKEYTb4b4b4.Te6edf3value Tff7b72-Tff7b72> Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3message_routing_error_pki_unknown_pubkey
Te6edf3RoutingTb4b4b4.Te6edf3ErrorTb4b4b4.Te6edf3PKI_SEND_FAIL_PUBLIC_KEYTb4b4b4.Te6edf3value Tff7b72-Tff7b72> Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3message_routing_error_pki_send_fail_public_key
Tff7b72else Tff7b72-Tff7b72> Te6edf3getStringResFromTb4b4b4(Te6edf3routingErrorTb4b4b4)
Tb4b4b4}
Tff7b72fun Td2a8ffgetMessageStatusStringResTb4b4b4(
Te6edf3statusTb4b4b4: Te6edf3MessageStatus?Tb4b4b4,
Te6edf3routingErrorTb4b4b4: Tffa657IntTb4b4b4,
Te6edf3isDirectMessageTb4b4b4: Tffa657Boolean Tff7b72= Tff7b72falseTb4b4b4,
Tb4b4b4)Tb4b4b4: Te6edf3PairTff7b72<Te6edf3StringResourceTb4b4b4, Te6edf3StringResourceTff7b72> Tb4b4b4{
Tff7b72val Te6edf3title Tff7b72= Tff7b72if Tb4b4b4(Te6edf3routingError Tff7b72> T79c0ff0Tb4b4b4) Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3error Tff7b72else Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3message_delivery_status
Tff7b72val Te6edf3text Tff7b72=
Tff7b72when Tb4b4b4(Te6edf3statusTb4b4b4) Tb4b4b4{
Te6edf3MessageStatusTb4b4b4.Te6edf3RECEIVED Tff7b72-Tff7b72> Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3message_status_recipient_delivered
Te6edf3MessageStatusTb4b4b4.Te6edf3QUEUED Tff7b72-Tff7b72> Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3message_status_enroute
Te6edf3MessageStatusTb4b4b4.Te6edf3ENROUTE Tff7b72-Tff7b72> Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3message_status_enroute
Te6edf3MessageStatusTb4b4b4.Te6edf3SFPP_ROUTING Tff7b72-Tff7b72> Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3message_status_sfpp_routing
Te6edf3MessageStatusTb4b4b4.Te6edf3SFPP_CONFIRMED Tff7b72-Tff7b72> Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3message_status_sfpp_confirmed
Te6edf3MessageStatusTb4b4b4.Te6edf3DELIVERED Tff7b72-Tff7b72>
Tff7b72if Tb4b4b4(Te6edf3isDirectMessageTb4b4b4) Tb4b4b4{
Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3message_status_relayed_not_confirmed
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3message_status_delivered
Tb4b4b4}
Te6edf3MessageStatusTb4b4b4.Te6edf3ERROR Tff7b72-Tff7b72> Te6edf3getMessageRoutingErrorStringResFromTb4b4b4(Te6edf3routingErrorTb4b4b4)
Te6edf3MessageStatusTb4b4b4.Te6edf3UNKNOWNTb4b4b4,
Tff7b72nullTb4b4b4,
Tff7b72-Tff7b72> Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3message_status_unknown
Tb4b4b4}
Tff7b72return Te6edf3title Te6edf3to Te6edf3text
Tb4b4b4}
Tff7b72fun Td2a8ffisMessageStatusRetryableTb4b4b4(Te6edf3statusTb4b4b4: Te6edf3MessageStatus?Tb4b4b4, Te6edf3routingErrorTb4b4b4: Tffa657IntTb4b4b4, Te6edf3isDirectMessageTb4b4b4: Tffa657Boolean Tff7b72= Tff7b72falseTb4b4b4)Tb4b4b4: Tffa657Boolean Tff7b72=
Tff7b72when Tb4b4b4{
Te6edf3status Tff7b72=Tff7b72= Te6edf3MessageStatusTb4b4b4.Te6edf3DELIVERED Tff7b72&Tff7b72& Te6edf3isDirectMessage Tff7b72-Tff7b72> Tff7b72true
Te6edf3status Tff7b72!Tff7b72= Te6edf3MessageStatusTb4b4b4.Te6edf3ERROR Tff7b72-Tff7b72> Tff7b72false
Te6edf3routingError Tff7b72in Te6edf3nonRetryableMessageRoutingErrors Tff7b72-Tff7b72> Tff7b72false
Tff7b72else Tff7b72-Tff7b72> Tff7b72true
Tb4b4b4}
Tff7b72private Tff7b72val Te6edf3nonRetryableMessageRoutingErrors Tff7b72= Te6edf3setOfTb4b4b4(Te6edf3RoutingTb4b4b4.Te6edf3ErrorTb4b4b4.Te6edf3NO_CHANNELTb4b4b4.Te6edf3valueTb4b4b4, Te6edf3RoutingTb4b4b4.Te6edf3ErrorTb4b4b4.Te6edf3TOO_LARGETb4b4b4.Te6edf3valueTb4b4b4)
Tff7b72data Tff7b72class T56d364MessageTb4b4b4(
Tff7b72val Te6edf3uuidTb4b4b4: Tffa657LongTb4b4b4,
Tff7b72val Te6edf3receivedTimeTb4b4b4: Tffa657LongTb4b4b4,
Tff7b72val Te6edf3nodeTb4b4b4: Te6edf3NodeTb4b4b4,
Tff7b72val Te6edf3textTb4b4b4: Tffa657StringTb4b4b4,
Tff7b72val Te6edf3fromLocalTb4b4b4: Tffa657BooleanTb4b4b4,
Tff7b72val Te6edf3timeTb4b4b4: Tffa657StringTb4b4b4,
T8b949e/**
* Mesh time in epoch millis (the packet's `rx_time`) — the instant [time] renders. 0 when the radio never stamped
* one (the packet carried no arrival time, or an old-firmware 0); read [displayTime] instead of this field so that
* case falls back to [receivedTime].
*/
Tff7b72val Te6edf3meshTimeTb4b4b4: Tffa657Long Tff7b72= T79c0ff0LTb4b4b4,
Tff7b72val Te6edf3readTb4b4b4: Tffa657BooleanTb4b4b4,
Tff7b72val Te6edf3statusTb4b4b4: Te6edf3MessageStatus?Tb4b4b4,
Tff7b72val Te6edf3routingErrorTb4b4b4: Tffa657IntTb4b4b4,
Tff7b72val Te6edf3packetIdTb4b4b4: Tffa657IntTb4b4b4,
Tff7b72val Te6edf3emojisTb4b4b4: Te6edf3ListTff7b72<Te6edf3ReactionTff7b72>Tb4b4b4,
T8b949e/** Signal-to-noise ratio in dB, or null when the packet carried no measurement. 0 dB is a valid reading. */
Tff7b72val Te6edf3snrTb4b4b4: Tffa657Float?Tb4b4b4,
T8b949e/** Received signal strength, or null when the radio did not report one. 0 dBm is a valid reading. */
Tff7b72val Te6edf3rssiTb4b4b4: Tffa657Int?Tb4b4b4,
Tff7b72val Te6edf3hopsAwayTb4b4b4: Tffa657IntTb4b4b4,
Tff7b72val Te6edf3replyIdTb4b4b4: Tffa657Int?Tb4b4b4,
Tff7b72val Te6edf3originalMessageTb4b4b4: Te6edf3Message? Tff7b72= Tff7b72nullTb4b4b4,
Tff7b72val Te6edf3viaMqttTb4b4b4: Tffa657Boolean Tff7b72= Tff7b72falseTb4b4b4,
Tff7b72val Te6edf3relayNodeTb4b4b4: Tffa657Int? Tff7b72= Tff7b72nullTb4b4b4,
Tff7b72val Te6edf3relaysTb4b4b4: Tffa657Int Tff7b72= T79c0ff0Tb4b4b4,
Tff7b72val Te6edf3filteredTb4b4b4: Tffa657Boolean Tff7b72= Tff7b72falseTb4b4b4,
T8b949e/** The transport mechanism this packet arrived over (see [MeshPacket.TransportMechanism]). */
Tff7b72val Te6edf3transportMechanismTb4b4b4: Tffa657Int Tff7b72= T79c0ff0Tb4b4b4,
T8b949e/** True when the radio verified this broadcast's XEdDSA signature ([MeshPacket.xeddsa_signed]). */
Tff7b72val Te6edf3xeddsaSignedTb4b4b4: Tffa657Boolean Tff7b72= Tff7b72falseTb4b4b4,
T8b949e/** On-device translation of [text], persisted so the user can toggle back to it without re-translating. */
Tff7b72val Te6edf3translatedTextTb4b4b4: Tffa657String? Tff7b72= Tff7b72nullTb4b4b4,
T8b949e/** Whether the bubble currently displays [translatedText] instead of [text]. */
Tff7b72val Te6edf3showTranslatedTb4b4b4: Tffa657Boolean Tff7b72= Tff7b72falseTb4b4b4,
Tb4b4b4) Tb4b4b4{
T8b949e/**
* Epoch millis behind the displayed [time]: mesh time when the radio stamped one, otherwise the local
* [receivedTime]. Use this for anything time-based the user can see, so an offline backlog sync — where every
* packet shares one receipt instant — still reads as the conversation actually happened.
*/
Tff7b72val Te6edf3displayTimeTb4b4b4: Tffa657Long
Tff7b72getTb4b4b4(Tb4b4b4) Tff7b72= Te6edf3meshTimeTb4b4b4.Te6edf3takeIf Tb4b4b4{ Tffa657it Tff7b72> T79c0ff0 Tb4b4b4} Tff7b72?: Te6edf3receivedTime
T8b949e/**
* The text the UI displays (and copies): the persisted translation when [showTranslated] is set, except while
* [searching] — search matches and highlights apply to the original [text].
*/
Tff7b72fun Td2a8ffdisplayedTextTb4b4b4(Te6edf3searchingTb4b4b4: Tffa657Boolean Tff7b72= Tff7b72falseTb4b4b4)Tb4b4b4: Tffa657String Tff7b72=
Tff7b72if Tb4b4b4(Te6edf3showTranslated Tff7b72&Tff7b72& Te6edf3translatedText Tff7b72!Tff7b72= Tff7b72null Tff7b72&Tff7b72& Tff7b72!Te6edf3searchingTb4b4b4) Te6edf3translatedText Tff7b72else Te6edf3text
Tff7b72fun Td2a8ffgetStatusStringResTb4b4b4(Te6edf3isDirectMessageTb4b4b4: Tffa657Boolean Tff7b72= Tff7b72falseTb4b4b4)Tb4b4b4: Te6edf3PairTff7b72<Te6edf3StringResourceTb4b4b4, Te6edf3StringResourceTff7b72> Tff7b72=
Te6edf3getMessageStatusStringResTb4b4b4(Te6edf3statusTb4b4b4, Te6edf3routingErrorTb4b4b4, Te6edf3isDirectMessageTb4b4b4)
Tff7b72fun Td2a8ffisStatusRetryableTb4b4b4(Te6edf3isDirectMessageTb4b4b4: Tffa657Boolean Tff7b72= Tff7b72falseTb4b4b4)Tb4b4b4: Tffa657Boolean Tff7b72=
Te6edf3isMessageStatusRetryableTb4b4b4(Te6edf3statusTb4b4b4, Te6edf3routingErrorTb4b4b4, Te6edf3isDirectMessageTb4b4b4)
Tb4b4b4}
Served by rngit 1.5.0 - Generated in 0.06s